        .text

        ; cp16/cp32 xa
        cp16.na  [cm:r1],[xa:r2]
        cp16     [cm:r1],[xa:r2]
        cp32.na  [cm:r1],[xa:r2]
        cp32     [cm:r1],[xa:r2]
        cp16.na  [cm:r1],[xa:r2,r1]
        cp16     [cm:r1],[xa:r2,r1]
        cp32.na  [cm:r1],[xa:r2,r1]
        cp32     [cm:r1],[xa:r2,r1]
        cp16.na r2,  [cm:r1],[xa:r2]
        cp16   	r2,  [cm:r1],[xa:r2]
        cp32.na r2,  [cm:r1],[xa:r2]
        cp32    r2,  [cm:r1],[xa:r2]
        cp16.na  r2,  [cm:r1],[xa:r2,r1]
        cp16   	 r2,  [cm:r1],[xa:r2,r1]
        cp32.na  r2,  [cm:r1],[xa:r2,r1]
        cp32     r2,  [cm:r1],[xa:r2,r1]

        ;; cp16/cp32 jid
        cp32      [cm:r1],[jid:r2]
        cp32  r2, [cm:r1],[jid:r2]

        ;; cp16/cp32 sd
        cp16   [cm:r2],[sd:r1,16,0]
        cp16.na   [cm:r2],[sd:r1,16,0]
        cp16   r1, [cm:r2],[sd:r1,16,0]
        cp16.na   r1, [cm:r2],[sd:r1,16,0]
        cp16   [cm:r2],[sd:r1,32,0]
        cp16.na   [cm:r2],[sd:r1,32,0]
        cp16   r1, [cm:r2],[sd:r1,32,0]
        cp16.na   r1, [cm:r2],[sd:r1,32,0]
        cp16   [cm:r2],[sd:r1,64,0]
        cp16.na   [cm:r2],[sd:r1,64,0]
        cp16   r1, [cm:r2],[sd:r1,64,0]
        cp16.na   r1, [cm:r2],[sd:r1,64,0]
        cp16   [cm:r2],[sd:r1,128,0]
        cp16.na   [cm:r2],[sd:r1,128,0]
        cp16   r1, [cm:r2],[sd:r1,128,0]
        cp16.na   r1, [cm:r2],[sd:r1,128,0]
        cp16   [cm:r2],[sd:r1,16,0]
        cp16.na   [cm:r2],[sd:r1,16,0]
        cp16   r1, [cm:r2],[sd:r1,16,0]
        cp16.na   r1, [cm:r2],[sd:r1,16,0]
        cp16   [cm:r2],[sd:r1,16,16]
        cp16.na   [cm:r2],[sd:r1,16,16]
        cp16   r1, [cm:r2],[sd:r1,16,16]
        cp16.na   r1, [cm:r2],[sd:r1,16,16]
        cp16   [cm:r2],[sd:r1,16,32]
        cp16.na   [cm:r2],[sd:r1,16,32]
        cp16   r1, [cm:r2],[sd:r1,16,32]
        cp16.na   r1, [cm:r2],[sd:r1,16,32]
        cp16   [cm:r2],[sd:r1,16,48]
        cp16.na   [cm:r2],[sd:r1,16,48]
        cp16   r1, [cm:r2],[sd:r1,16,48]
        cp16.na   r1, [cm:r2],[sd:r1,16,48]
        cp16   [cm:r2],[sd:r1,16,64]
        cp16.na   [cm:r2],[sd:r1,16,64]
        cp16   r1, [cm:r2],[sd:r1,16,64]
        cp16.na   r1, [cm:r2],[sd:r1,16,64]
        cp16   [cm:r2],[sd:r1,16,0, r2]
        cp16.na   [cm:r2],[sd:r1,16,0, r2]
        cp16   r1, [cm:r2],[sd:r1,16,0,r2]
        cp16.na   r1, [cm:r2],[sd:r1,16,0,r2]
        cp16   [cm:r2],[sd:r1,32,0, r2]
        cp16.na   [cm:r2],[sd:r1,32,0, r2]
        cp16   r1, [cm:r2],[sd:r1,32,0, r2]
        cp16.na   r1, [cm:r2],[sd:r1,32,0, r2]
        cp16   [cm:r2],[sd:r1,64,0, r2]
        cp16.na   [cm:r2],[sd:r1,64,0, r2]
        cp16   r1, [cm:r2],[sd:r1,64,0, r2]
        cp16.na   r1, [cm:r2],[sd:r1,64,0, r2]
        cp16   [cm:r2],[sd:r1,128,0, r2]
        cp16.na   [cm:r2],[sd:r1,128,0, r2]
        cp16   r1, [cm:r2],[sd:r1,128,0, r2]
        cp16.na   r1, [cm:r2],[sd:r1,128,0, r2]
        cp16   [cm:r2],[sd:r1,r2,r2]
        cp16.na   [cm:r2],[sd:r1,r2,r2]
        cp16   r1, [cm:r2],[sd:r1,r2,r2]
        cp16.na   r1, [cm:r2],[sd:r1,r2,r2]
        cp16   [cm:r2],[sd:r1,r2,r2,r2]
        cp16.na   [cm:r2],[sd:r1,r2,r2,r2]
        cp16   r1, [cm:r2],[sd:r1,r2,r2,r2]
        cp16.na   r1, [cm:r2],[sd:r1,r2,r2,r2]
        cp32   [cm:r2],[sd:r1,16,0]
        cp32.na   [cm:r2],[sd:r1,16,0]
        cp32   r1, [cm:r2],[sd:r1,16,0]
        cp32.na   r1, [cm:r2],[sd:r1,16,0]
        cp32   [cm:r2],[sd:r1,32,0]
        cp32.na   [cm:r2],[sd:r1,32,0]
        cp32   r1, [cm:r2],[sd:r1,32,0]
        cp32.na   r1, [cm:r2],[sd:r1,32,0]
        cp32   [cm:r2],[sd:r1,64,0]
        cp32.na   [cm:r2],[sd:r1,64,0]
        cp32   r1, [cm:r2],[sd:r1,64,0]
        cp32.na   r1, [cm:r2],[sd:r1,64,0]
        cp32   [cm:r2],[sd:r1,128,0]
        cp32.na   [cm:r2],[sd:r1,128,0]
        cp32   r1, [cm:r2],[sd:r1,128,0]
        cp32.na   r1, [cm:r2],[sd:r1,128,0]
        cp32   [cm:r2],[sd:r1,16,0]
        cp32.na   [cm:r2],[sd:r1,16,0]
        cp32   r1, [cm:r2],[sd:r1,16,0]
        cp32.na   r1, [cm:r2],[sd:r1,16,0]
        cp32   [cm:r2],[sd:r1,16,16]
        cp32.na   [cm:r2],[sd:r1,16,16]
        cp32   r1, [cm:r2],[sd:r1,16,16]
        cp32.na   r1, [cm:r2],[sd:r1,16,16]
        cp32   [cm:r2],[sd:r1,16,32]
        cp32.na   [cm:r2],[sd:r1,16,32]
        cp32   r1, [cm:r2],[sd:r1,16,32]
        cp32.na   r1, [cm:r2],[sd:r1,16,32]
        cp32   [cm:r2],[sd:r1,16,48]
        cp32.na   [cm:r2],[sd:r1,16,48]
        cp32   r1, [cm:r2],[sd:r1,16,48]
        cp32.na   r1, [cm:r2],[sd:r1,16,48]
        cp32   [cm:r2],[sd:r1,16,64]
        cp32.na   [cm:r2],[sd:r1,16,64]
        cp32   r1, [cm:r2],[sd:r1,16,64]
        cp32.na   r1, [cm:r2],[sd:r1,16,64]
        cp32   [cm:r2],[sd:r1,16,0, r2]
        cp32.na   [cm:r2],[sd:r1,16,0, r2]
        cp32   r1, [cm:r2],[sd:r1,16,0,r2]
        cp32.na   r1, [cm:r2],[sd:r1,16,0,r2]
        cp32   [cm:r2],[sd:r1,32,0, r2]
        cp32.na   [cm:r2],[sd:r1,32,0, r2]
        cp32   r1, [cm:r2],[sd:r1,32,0, r2]
        cp32.na   r1, [cm:r2],[sd:r1,32,0, r2]
        cp32   [cm:r2],[sd:r1,64,0, r2]
        cp32.na   [cm:r2],[sd:r1,64,0, r2]
        cp32   r1, [cm:r2],[sd:r1,64,0, r2]
        cp32.na   r1, [cm:r2],[sd:r1,64,0, r2]
        cp32   [cm:r2],[sd:r1,128,0, r2]
        cp32.na   [cm:r2],[sd:r1,128,0, r2]
        cp32   r1, [cm:r2],[sd:r1,128,0, r2]
        cp32.na   r1, [cm:r2],[sd:r1,128,0, r2]
        cp32   [cm:r2],[sd:r1,r2,r2]
        cp32.na   [cm:r2],[sd:r1,r2,r2]
        cp32   r1, [cm:r2],[sd:r1,r2,r2]
        cp32.na   r1, [cm:r2],[sd:r1,r2,r2]
        cp32   [cm:r2],[sd:r1,r2,r2,r2]
        cp32.na   [cm:r2],[sd:r1,r2,r2,r2]
        cp32   r1, [cm:r2],[sd:r1,r2,r2,r2]
        cp32.na   r1, [cm:r2],[sd:r1,r2,r2,r2]
        ; cp16/cp32 xd
        cp16   [cm:r2],[xd:r1,16,0]
        cp16.na   [cm:r2],[xd:r1,16,0]
        cp16   r1, [cm:r2],[xd:r1,16,0]
        cp16.na   r1, [cm:r2],[xd:r1,16,0]
        cp16   [cm:r2],[xd:r1,32,0]
        cp16.na   [cm:r2],[xd:r1,32,0]
        cp16   r1, [cm:r2],[xd:r1,32,0]
        cp16.na   r1, [cm:r2],[xd:r1,32,0]
        cp16   [cm:r2],[xd:r1,64,0]
        cp16.na   [cm:r2],[xd:r1,64,0]
        cp16   r1, [cm:r2],[xd:r1,64,0]
        cp16.na   r1, [cm:r2],[xd:r1,64,0]
        cp16   [cm:r2],[xd:r1,128,0]
        cp16.na   [cm:r2],[xd:r1,128,0]
        cp16   r1, [cm:r2],[xd:r1,128,0]
        cp16.na   r1, [cm:r2],[xd:r1,128,0]
        cp16   [cm:r2],[xd:r1,16,0]
        cp16.na   [cm:r2],[xd:r1,16,0]
        cp16   r1, [cm:r2],[xd:r1,16,0]
        cp16.na   r1, [cm:r2],[xd:r1,16,0]
        cp16   [cm:r2],[xd:r1,16,16]
        cp16.na   [cm:r2],[xd:r1,16,16]
        cp16   r1, [cm:r2],[xd:r1,16,16]
        cp16.na   r1, [cm:r2],[xd:r1,16,16]
        cp16   [cm:r2],[xd:r1,16,32]
        cp16.na   [cm:r2],[xd:r1,16,32]
        cp16   r1, [cm:r2],[xd:r1,16,32]
        cp16.na   r1, [cm:r2],[xd:r1,16,32]
        cp16   [cm:r2],[xd:r1,16,48]
        cp16.na   [cm:r2],[xd:r1,16,48]
        cp16   r1, [cm:r2],[xd:r1,16,48]
        cp16.na   r1, [cm:r2],[xd:r1,16,48]
        cp16   [cm:r2],[xd:r1,16,64]
        cp16.na   [cm:r2],[xd:r1,16,64]
        cp16   r1, [cm:r2],[xd:r1,16,64]
        cp16.na   r1, [cm:r2],[xd:r1,16,64]
        cp16   [cm:r2],[xd:r1,16,0, r2]
        cp16.na   [cm:r2],[xd:r1,16,0, r2]
        cp16   r1, [cm:r2],[xd:r1,16,0,r2]
        cp16.na   r1, [cm:r2],[xd:r1,16,0,r2]
        cp16   [cm:r2],[xd:r1,32,0, r2]
        cp16.na   [cm:r2],[xd:r1,32,0, r2]
        cp16   r1, [cm:r2],[xd:r1,32,0, r2]
        cp16.na   r1, [cm:r2],[xd:r1,32,0, r2]
        cp16   [cm:r2],[xd:r1,64,0, r2]
        cp16.na   [cm:r2],[xd:r1,64,0, r2]
        cp16   r1, [cm:r2],[xd:r1,64,0, r2]
        cp16.na   r1, [cm:r2],[xd:r1,64,0, r2]
        cp16   [cm:r2],[xd:r1,128,0, r2]
        cp16.na   [cm:r2],[xd:r1,128,0, r2]
        cp16   r1, [cm:r2],[xd:r1,128,0, r2]
        cp16.na   r1, [cm:r2],[xd:r1,128,0, r2]
        cp16   [cm:r2],[xd:r1,r2,r2]
        cp16.na   [cm:r2],[xd:r1,r2,r2]
        cp16   r1, [cm:r2],[xd:r1,r2,r2]
        cp16.na   r1, [cm:r2],[xd:r1,r2,r2]
        cp16   [cm:r2],[xd:r1,r2,r2,r2]
        cp16.na   [cm:r2],[xd:r1,r2,r2,r2]
        cp16   r1, [cm:r2],[xd:r1,r2,r2,r2]
        cp16.na   r1, [cm:r2],[xd:r1,r2,r2,r2]
        cp32   [cm:r2],[xd:r1,16,0]
        cp32.na   [cm:r2],[xd:r1,16,0]
        cp32   r1, [cm:r2],[xd:r1,16,0]
        cp32.na   r1, [cm:r2],[xd:r1,16,0]
        cp32   [cm:r2],[xd:r1,32,0]
        cp32.na   [cm:r2],[xd:r1,32,0]
        cp32   r1, [cm:r2],[xd:r1,32,0]
        cp32.na   r1, [cm:r2],[xd:r1,32,0]
        cp32   [cm:r2],[xd:r1,64,0]
        cp32.na   [cm:r2],[xd:r1,64,0]
        cp32   r1, [cm:r2],[xd:r1,64,0]
        cp32.na   r1, [cm:r2],[xd:r1,64,0]
        cp32   [cm:r2],[xd:r1,128,0]
        cp32.na   [cm:r2],[xd:r1,128,0]
        cp32   r1, [cm:r2],[xd:r1,128,0]
        cp32.na   r1, [cm:r2],[xd:r1,128,0]
        cp32   [cm:r2],[xd:r1,16,0]
        cp32.na   [cm:r2],[xd:r1,16,0]
        cp32   r1, [cm:r2],[xd:r1,16,0]
        cp32.na   r1, [cm:r2],[xd:r1,16,0]
        cp32   [cm:r2],[xd:r1,16,16]
        cp32.na   [cm:r2],[xd:r1,16,16]
        cp32   r1, [cm:r2],[xd:r1,16,16]
        cp32.na   r1, [cm:r2],[xd:r1,16,16]
        cp32   [cm:r2],[xd:r1,16,32]
        cp32.na   [cm:r2],[xd:r1,16,32]
        cp32   r1, [cm:r2],[xd:r1,16,32]
        cp32.na   r1, [cm:r2],[xd:r1,16,32]
        cp32   [cm:r2],[xd:r1,16,48]
        cp32.na   [cm:r2],[xd:r1,16,48]
        cp32   r1, [cm:r2],[xd:r1,16,48]
        cp32.na   r1, [cm:r2],[xd:r1,16,48]
        cp32   [cm:r2],[xd:r1,16,64]
        cp32.na   [cm:r2],[xd:r1,16,64]
        cp32   r1, [cm:r2],[xd:r1,16,64]
        cp32.na   r1, [cm:r2],[xd:r1,16,64]
        cp32   [cm:r2],[xd:r1,16,0, r2]
        cp32.na   [cm:r2],[xd:r1,16,0, r2]
        cp32   r1, [cm:r2],[xd:r1,16,0,r2]
        cp32.na   r1, [cm:r2],[xd:r1,16,0,r2]
        cp32   [cm:r2],[xd:r1,32,0, r2]
        cp32.na   [cm:r2],[xd:r1,32,0, r2]
        cp32   r1, [cm:r2],[xd:r1,32,0, r2]
        cp32.na   r1, [cm:r2],[xd:r1,32,0, r2]
        cp32   [cm:r2],[xd:r1,64,0, r2]
        cp32.na   [cm:r2],[xd:r1,64,0, r2]
        cp32   r1, [cm:r2],[xd:r1,64,0, r2]
        cp32.na   r1, [cm:r2],[xd:r1,64,0, r2]
        cp32   [cm:r2],[xd:r1,128,0, r2]
        cp32.na   [cm:r2],[xd:r1,128,0, r2]
        cp32   r1, [cm:r2],[xd:r1,128,0, r2]
        cp32.na   r1, [cm:r2],[xd:r1,128,0, r2]
        cp32   [cm:r2],[xd:r1,r2,r2]
        cp32.na   [cm:r2],[xd:r1,r2,r2]
        cp32   r1, [cm:r2],[xd:r1,r2,r2]
        cp32.na   r1, [cm:r2],[xd:r1,r2,r2]
        cp32   [cm:r2],[xd:r1,r2,r2,r2]
        cp32.na   [cm:r2],[xd:r1,r2,r2,r2]
        cp32   r1, [cm:r2],[xd:r1,r2,r2,r2]
        cp32.na   r1, [cm:r2],[xd:r1,r2,r2,r2]
        ;cp16/32 cm to xa
        cp16 [xa:r1],[cm:r2]
        cp16.na [xa:r1],[cm:r2]
        cp32 [xa:r1],[cm:r2]
        cp32.na [xa:r1],[cm:r2]
        cp32 [jid:r1],[cm:r2]

        cp16 [sd:r1,0x20,0x10],[cm:r2]
        cp16.na [sd:r1,0x20,0x10],[cm:r2]
        cp16 [xd:r1,0x20,0x10],[cm:r2]
        cp16.na [xd:r1,0x20,0x10],[cm:r2]
        cp32 [sd:r1,0x20,0x10],[cm:r2]
        cp32.na [sd:r1,0x20,0x10],[cm:r2]
        cp32 [xd:r1,0x20,0x10],[cm:r2]
        cp32.na [xd:r1,0x20,0x10],[cm:r2]

        cp16 [sd:r1,0x20,0x10,r2],[cm:r2]
        cp16.na [sd:r1,0x20,0x10,r2],[cm:r2]
        cp16 [xd:r1,0x20,0x10,r2],[cm:r2]
        cp16.na [xd:r1,0x20,0x10,r2],[cm:r2]
        cp32 [sd:r1,0x20,0x10,r2],[cm:r2]
        cp32.na [sd:r1,0x20,0x10,r2],[cm:r2]
        cp32 [xd:r1,0x20,0x10,r2],[cm:r2]
        cp32.na [xd:r1,0x20,0x10,r2],[cm:r2]

        cp16 [sd:r1,r2,r2],[cm:r2]
        cp16.na [sd:r1,r2,r2],[cm:r2]
        cp16 [xd:r1,r2,r2],[cm:r2]
        cp16.na [xd:r1,r2,r2],[cm:r2]
        cp32 [sd:r1,r2,r2],[cm:r2]
        cp32.na [sd:r1,r2,r2],[cm:r2]
        cp32 [xd:r1,r2,r2],[cm:r2]
        cp32.na [xd:r1,r2,r2],[cm:r2]

        cp16 [sd:r1,r2,r2,r2],[cm:r2]
        cp16.na [sd:r1,r2,r2,r2],[cm:r2]
        cp16 [xd:r1,r2,r2,r2],[cm:r2]
        cp16.na [xd:r1,r2,r2,r2],[cm:r2]
        cp32 [sd:r1,r2,r2,r2],[cm:r2]
        cp32.na [sd:r1,r2,r2,r2],[cm:r2]
        cp32 [xd:r1,r2,r2,r2],[cm:r2]
        cp32.na [xd:r1,r2,r2,r2],[cm:r2]
